const crypto = require('crypto');
const ResponseUtil = require('../utils/ResponseUtil');
const VRCE = require('../utils/ViewResultCodeEnum');
const RCEM = require('../utils/ResultCodeEnumMsg');
const Constant = require('../config/Constant');
const OperatorType = require('../config/OperatorType');
const ROLES = [OperatorType.BROKER, OperatorType.LAWYER, OperatorType.FUNDRAISER];
module.exports = (options, app) => {
    return async function middlewarreone(ctx, next) {
        const checklist = [
            '/publish/company'
        ];
        let isCheck = false;
        for (let i = 0; i < checklist.length; i++) {
            if (ctx.path.indexOf(checklist[i]) > -1) {
                isCheck = true;
                break;
            }
        }
        if (isCheck) {
            let loginInfo = ctx.getLoginInfo();
            if (!loginInfo) {
                console.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                ctx.app.logger.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                return ctx.body = ResponseUtil.resError(RCEM.NO_SERVICE_PERMISSION[1], RCEM.NO_SERVICE_PERMISSION[0])
            }
            if (!loginInfo.operatorId || !loginInfo.operatorType) {
                console.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                ctx.app.logger.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                return ctx.body = ResponseUtil.resError(RCEM.NO_SERVICE_PERMISSION[1], RCEM.NO_SERVICE_PERMISSION[0])
            }
            if (!ROLES.includes(loginInfo.operatorType)) {
                console.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                ctx.app.logger.error(`请求访问：${ctx.path}，没有权限，请联系管理员授权`);
                return ctx.body = ResponseUtil.resError(RCEM.NO_SERVICE_PERMISSION[1], RCEM.NO_SERVICE_PERMISSION[0])
            }
        }

        await next();
    }
};
